/*******************************
          Register PM
*******************************/

/*
  Task to register component repos with Package Managers
  * Registers component with bower
  * Registers component with NPM
*/

var // node dependencies
  process = require("child_process"),
  // config
  release = require("../config/admin/release"),
  // register components and distributions
  repos = release.distributions.concat(release.components),
  total = repos.length,
  index = -1,
  stream,
  stepRepo;

module.exports = function(callback) {
  console.log("Registering repos with package managers");

  // Do Git commands synchronously per component, to avoid issues
  stepRepo = function() {
    index = index + 1;
    if (index >= total) {
      callback();
      return;
    }
    var repo = repos[index].toLowerCase(),
      outputDirectory = release.outputRoot + repo + "/",
      exec = process.exec,
      execSettings = { cwd: outputDirectory },
      updateNPM = "npm publish;meteor publish;";

    /* Register with NPM */
    exec(updateNPM, execSettings, function(err, stdout, stderr) {
      console.log(err, stdout, stderr);
      stepRepo();
    });
  };
  stepRepo();
};
